﻿namespace Logica{
using TUVienna.CS_CUP.Runtime;
%%
%cup
%public
%state cadena

WHITE_SPACE_CHAR=[\n\ \t\b\012]
STRING_TEXT=(\\\"|[^\n\"]|\\{WHITE_SPACE_CHAR}+\\)*

%%

<YYINITIAL> \"{STRING_TEXT}\" {
       return new Symbol(sym.cadena, yytext().Substring(1, yytext().Length - 2));
}

"<"			 { return new Symbol(sym.menorque);   }
">"			 { return new Symbol(sym.mayorque);   }
"servicio"	 { return new Symbol(sym.servicio);   }
"metodos"	 { return new Symbol(sym.metodos);    }
"metodo"	 { return new Symbol(sym.metodo);     }
"nombre"	 { return new Symbol(sym.nombre);     }
"="			 { return new Symbol(sym.igual);	  }
"parametros" { return new Symbol(sym.parametros); }
"parametro"	 { return new Symbol(sym.parametro);  }
"tipo"		 { return new Symbol(sym.tipo);		  }
"/"			 { return new Symbol(sym.diagonal);   }
"retorno"	 { return new Symbol(sym.retorno);    }
"tamanio"    { return new Symbol(sym.tamanio);    }

[ \t\r\n\f] { /* ignore white space. */break; }
. { System.Console.Error.WriteLine("Illegal character: "+yytext());break; }
